const { User } = require('../models')

module.exports = async (ctx, next) => {
    var userId = ctx.session.userId;    // session中的userId
    var path = ctx.path;   // 当前的路径
    // console.log(userId);

    // if(userRole === )

    if (!userId) {    // userId为空则未登录
        // 手动指定登录页面时，应该放行；否则则重定向到登录页面
        if (path === '/login') {   // 当前已经在登录页面，放行
            await next();
        } else {  // 不在登陆页面，强制指向登陆页面
            ctx.redirect('/login');
        };
    } else {  //userId不为空则已经登录

        // 管理员和普通用户强制返回的首页页面不一样

        var userRole = JSON.parse(JSON.stringify(await User .findOne({
            where: {
                id: userId
            }
        })));
        // console.log(userRole.jurisdiction);
        if (userRole.state === '1') {
            // console.log(userRole.jurisdiction);
            // 普通用户
            // 不允许返回登录页面，除非注销userId
            if (path === '/login') {   // 想返回登录页面时，强制指向登录成功后的首页
                ctx.redirect('/');
            } else if (path === '/admin') { //路由等于管理员页面
                ctx.redirect('/');
            } else {      // 除登陆页面和管理员页面以外都放行
                await next();
            }

        } else if (userRole.state === '2') {
            // console.log(userRole.jurisdiction);
            // 管理员
            // 不允许返回登录页面，除非注销userId
            if (path === '/login') {   // 想返回登录页面时，强制指向登录成功后的首页
                ctx.redirect('/admin');
            } else if (path === '/') { //路由等于普通页面
                ctx.redirect('/admin');
            } else {      // 除登陆页面以外都放行
                await next();
            }
        }
    }
}